package gestionePacchettiViaggio;


import java.util.ArrayList;
import java.util.List;

import gestione.mgrPacchettoviaggio.*;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import com.sun.xml.rpc.processor.modeler.j2ee.xml.emptyType;

import dataTransferOblect.AlbergoDTO;
import dataTransferOblect.EscursioneDTO;
import dataTransferOblect.PacchettoviaggioDTO;
import dataTransferOblect.VoloDTO;

@ManagedBean(name="creazionePacchetto")
@RequestScoped
public class CreazionePacchettiViaggio {
	
	@EJB
	private PacchettoviaggioMgr pacchettoViaggioMgr;
	
	@EJB
	private AlbergoMgr albergoMgr;

	private PacchettoviaggioDTO pacchettoviaggio;
	
	private PacchettoviaggioDTO pacchettoSelezionato;
	
	
	private int idAlbergo;
	
	//private ArrayList<EscursioneDTO> escursioneDTOs;
	
	private ArrayList<String> idEscursioni;
	
	private List<PacchettoviaggioDTO> pacchettiFiltrati;
	
	private VoloDTO voloAndata;
	
	private VoloDTO voloRitorno;
	
	
	public CreazionePacchettiViaggio(){
		pacchettoviaggio = new PacchettoviaggioDTO();
		idEscursioni = new ArrayList<String>();
		pacchettoSelezionato = new PacchettoviaggioDTO();
		voloAndata = new VoloDTO();
		voloRitorno = new VoloDTO();
		//pacchettiFiltrati = new ArrayList<PacchettoviaggioDTO>();
		
		 
		//escursioneDTOs = new ArrayList<EscursioneDTO>();
	}
	
//	public ArrayList<EscursioneDTO> getEscursioneDTOs() {
//		return escursioneDTOs;
//	}
//
//	public void setEscursioneDTOs(ArrayList<EscursioneDTO> escursioneDTOs) {
//		this.escursioneDTOs = escursioneDTOs;
//	}

	

	public PacchettoviaggioDTO getPacchettoviaggioDTO() {
		return pacchettoviaggio;
	}

	public void setPacchettoviaggioDTO(PacchettoviaggioDTO pacchettoviaggioDTO) {
		this.pacchettoviaggio = pacchettoviaggioDTO;
	}
	
	public String creaPacchetto() {

		pacchettoViaggioMgr.creaPacchetto(pacchettoviaggio, idAlbergo, idEscursioni  );
		
		return "index.xhtml";
	}

	public int getIdAlbergo() {
		return idAlbergo;
	}

	public void setIdAlbergo(int idAlbergo) {
		this.idAlbergo = idAlbergo;
	}
	
	public ArrayList<PacchettoviaggioDTO> getAllPacchetti(){
		return pacchettoViaggioMgr.getAllPacchettiViaggioDTO();
	}
	
	public ArrayList<PacchettoviaggioDTO> getPacchettiNonAcquistati(){
		ArrayList<PacchettoviaggioDTO> pacchettiNonAcquistati = pacchettoViaggioMgr.getAllPacchettiViaggioDTO();
		for (int i=0; i<pacchettoViaggioMgr.getAllPacchettiViaggioDTO().size();i++){
			if(pacchettoViaggioMgr.getAllPacchettiViaggioDTO().contains(pacchettoViaggioMgr.getPacchettiViaggioAcquistatiDTO().get(i))){
				pacchettiNonAcquistati.remove(pacchettoViaggioMgr.getPacchettiViaggioAcquistatiDTO().get(i));
			}
		}
		return pacchettiNonAcquistati;
	}
	
	

	public ArrayList<String> getIdEscursioni() {
		return idEscursioni;
	}

	public void setIdEscursioni(ArrayList<String> idEscursioni) {
		this.idEscursioni = idEscursioni;
	}

	public List<PacchettoviaggioDTO> getPacchettiFiltrati() {
		return pacchettiFiltrati;
	}

	public void setPacchettiFiltrati(List<PacchettoviaggioDTO> pacchettiFiltrati) {
		this.pacchettiFiltrati = pacchettiFiltrati;
	}

	public PacchettoviaggioDTO getPacchettoSelezionato() {
		return pacchettoSelezionato;
	}

	public void setPacchettoSelezionato(PacchettoviaggioDTO pacchettoSelezionato) {
		this.pacchettoSelezionato = pacchettoSelezionato;
	}
	
	
	
	public String acquistaPacchetto(PacchettoviaggioDTO pacchettoviaggioDTO){
		pacchettoSelezionato=pacchettoviaggioDTO;
		pacchettoViaggioMgr.acquistaPacchetto(pacchettoSelezionato);
		return "index.xhtml";
	}
	
	public String acquistaPacchettoConVolo(PacchettoviaggioDTO pacchettoviaggioDTO){
		pacchettoSelezionato=pacchettoviaggioDTO;
		voloAndata= new VoloDTO();
		voloRitorno= new VoloDTO();
		pacchettoviaggioDTO.setVoloAndata(voloAndata);
		pacchettoviaggioDTO.setVoloRitorno(voloRitorno);
		pacchettoViaggioMgr.acquistaPacchetto(pacchettoSelezionato);
		return "index.xhtml";
	}

	public VoloDTO getVoloAndata() {
		return voloAndata;
	}

	public void setVoloAndata(VoloDTO voloAndata) {
		this.voloAndata = voloAndata;
	}

	public VoloDTO getVoloRitorno() {
		return voloRitorno;
	}

	public void setVoloRitorno(VoloDTO voloRitorno) {
		this.voloRitorno = voloRitorno;
	}
	
	
	

}
